package com.study.interface_extend_prior;

public class Test {
    public static void main(String[] args) {
        //3、一个类继承了父类，同时实现了接口，父类和接口名中有同名的默认方法，优先用父类的
        A a = new A();
        a.print();
        System.out.println("-------------------------------");
        D d = new D();
        d.run();
    }
}
//1、一个接口继承多个接口，若多个接口间存在方法冲突，此时不支持多继承
/*
interface A extends B,C{

}
interface B{
    void run();
}
interface C{
    String run();
}*/

//2、一个类实现多个接口，若多个接口间存在方法冲突，此时不支持多实现

/*class A implements B,C{

}
interface B{
    void run();
}
interface C{
    String run();
}*/


class A extends B implements C{

}
class B{
    public void print(){
        System.out.println("B");
    }
}
interface C{
    default void print(){
        System.out.println("C");
    }
}

//4、一个类实现了多个接口、多个接口中存在同名的默认方法，可以不冲突，这个类重写该方法即可
class D implements E,F{
    @Override
    public void run() {
        System.out.println("都不用！");
        E.super.run();
        F.super.run();
    }
}
interface E{
    default void run(){
        System.out.println("E");
    }
}
interface F{
    default void run(){
        System.out.println("F");
    }
        }
